//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 1e6 + 7;
//using namespace std;
//void solve()
//
//{
//	int d; cin >> d;
//	int ans = 0;
//	for (int i = 1; i <= d; ++i) {
//		int x; cin >> x;
//		ans ^= x;
//	}
//	cout << ans << '\n';
//}
//int main()
//{
//	int _; cin >> _;
//	while (_--)
//		solve();
//	return 0;
//}

//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 2e6 + 7;
//using namespace std;
//
//vector<ll>a;
//
//struct Book {
//	int a, b, c;
//	bool operator < (const Book& u)const {
//		if (a == u.a && b == u.b) return c < u.c;
//		if (a == u.a)return b < u.b;
//		return a < u.a;
//	}
//
//}p[N];
//
//
//
//int main()
//{
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//	//int n; cin >> n;
//	//for (int i = 0; i < n; ++i) {
//	//	ll x; cin >> x;
//	//	a.push_back(x);
//
//	//}
//
//	//sort(a.begin(), a.end());
//	//a.erase(unique(a.begin(), a.end()), a.end());
//
//	//for (auto& i : a)cout << i << ' ';
//
//
//	//int b[] = { 1,9,5,3 };
//	//for (auto i : b) i = 1;
//	//for (auto i : b)cout << i << ' ';
//	//for (auto& i : b) i = 1;
//	//for (auto i : b) cout << i << ' ';
//
//	int n; cin >> n;
//	for (int i = 1; i <= n; ++i)
//		cin >> p[i].a >> p[i].b >> p[i].c;
//	sort(p + 1, p + 1 + n);
//
//	reverse(p + 1, p + 1 + n);
//
//	for (int i = 1; i <= n; ++i)
//		cout << p[i].a << ' ' << p[i].b << " " << p[i].c << "\n";
//
//
//
//	return 0;
//}

//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 3e6 + 7;
//using namespace std;
//
//int c[N];
//
//int main()
//{
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//	int x; cin >> x;
//	for (int i = 0; i < x; ++i) {
//		int k; cin >> k;
//		c[k]++;
//	}
//
//	for (int i = 0; i <= 2e5; ++i) {
//		for (int j = 0; j < c[i]; ++j) {
//			cout << i<<' ';
//		}
//	}
//
//
//	return 0;
//}
//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 1e5 + 7;
//using namespace std;
//int a[N], c[N];
//
//void  solve()
//{
//	int n; cin >> n;
//	for (int i = 1; i <= n; ++i)cin >> a[i];
//
//	memset(c, 0, sizeof(int) * (n + 1));
//
//
//	ll ans = 0;
//	for (int i = 1,j= 0; i <= n; ++i) {
//		while (j < n && !c[a[j + 1]]) c[a[++j]]++;
//
//
//		ans = max(ans, j - i + 1ll);
//		c[a[i]]--;
//
//
//	}
//	cout << ans << '\n';
//
//}
//int main()
//{
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//	int _; cin >> _;
//	while (_--)solve();
//
//
//
//	return 0;
//}

//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 2e5 + 7;
//using namespace std;
//int a[N];
//
//void solve()
//{
//	int n, q; cin >> n >> q;
//	for (int i = 1; i <= n; ++i)cin >> a[i];
//
//	while (q--) {
//		int x; cin >> x;
//		int l = 0, r = n;
//		while (l + 1 != r) {
//			int mid = (l + r) >> 1;
//			if (a[mid] < x)l = mid;
//			else r = mid;
//		}
//
//		if (a[r] == x)cout << r << '\n';
//		else cout << -1 << "\n";
//
//
//	}
//
//
//
//}
//
//
//int main()
//{
//
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//
//	int _ = 1;
//	while (_--)solve();
//
//
//	return 0;
//}



//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 1e6 + 7;
//using namespace std;
//void solve()
//
//{
//	int d; cin >> d;
//	int ans = 0;
//	for (int i = 1; i <= d; ++i) {
//		int x; cin >> x;
//		ans ^= x;
//	}
//	cout << ans << '\n';
//}
//int main()
//{
//	int _; cin >> _;
//	while (_--)
//		solve();
//	return 0;
//}

//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 2e6 + 7;
//using namespace std;
//
//vector<ll>a;
//
//struct Book {
//	int a, b, c;
//	bool operator < (const Book& u)const {
//		if (a == u.a && b == u.b) return c < u.c;
//		if (a == u.a)return b < u.b;
//		return a < u.a;
//	}
//
//}p[N];
//
//
//
//int main()
//{
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//	//int n; cin >> n;
//	//for (int i = 0; i < n; ++i) {
//	//	ll x; cin >> x;
//	//	a.push_back(x);
//
//	//}
//
//	//sort(a.begin(), a.end());
//	//a.erase(unique(a.begin(), a.end()), a.end());
//
//	//for (auto& i : a)cout << i << ' ';
//
//
//	//int b[] = { 1,9,5,3 };
//	//for (auto i : b) i = 1;
//	//for (auto i : b)cout << i << ' ';
//	//for (auto& i : b) i = 1;
//	//for (auto i : b) cout << i << ' ';
//
//	int n; cin >> n;
//	for (int i = 1; i <= n; ++i)
//		cin >> p[i].a >> p[i].b >> p[i].c;
//	sort(p + 1, p + 1 + n);
//
//	reverse(p + 1, p + 1 + n);
//
//	for (int i = 1; i <= n; ++i)
//		cout << p[i].a << ' ' << p[i].b << " " << p[i].c << "\n";
//
//
//
//	return 0;
//}

//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 3e6 + 7;
//using namespace std;
//
//int c[N];
//
//int main()
//{
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//	int x; cin >> x;
//	for (int i = 0; i < x; ++i) {
//		int k; cin >> k;
//		c[k]++;
//	}
//
//	for (int i = 0; i <= 2e5; ++i) {
//		for (int j = 0; j < c[i]; ++j) {
//			cout << i<<' ';
//		}
//	}
//
//
//	return 0;
//}
//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 1e5 + 7;
//using namespace std;
//int a[N], c[N];
//
//void  solve()
//{
//	int n; cin >> n;
//	for (int i = 1; i <= n; ++i)cin >> a[i];
//
//	memset(c, 0, sizeof(int) * (n + 1));
//
//
//	ll ans = 0;
//	for (int i = 1,j= 0; i <= n; ++i) {
//		while (j < n && !c[a[j + 1]]) c[a[++j]]++;
//
//
//		ans = max(ans, j - i + 1ll);
//		c[a[i]]--;
//
//
//	}
//	cout << ans << '\n';
//
//}
//int main()
//{
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//	int _; cin >> _;
//	while (_--)solve();
//
//
//
//	return 0;
//}

//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 2e5 + 7;
//using namespace std;
//int a[N];
//
//void solve()
//{
//	int n, q; cin >> n >> q;
//	for (int i = 1; i <= n; ++i)cin >> a[i];
//
//	while (q--) {
//		int x; cin >> x;
//		int l = 0, r = n;
//		while (l + 1 != r) {
//			int mid = (l + r) >> 1;
//			if (a[mid] < x)l = mid;
//			else r = mid;
//		}
//
//		if (a[r] == x)cout << r << '\n';
//		else cout << -1 << "\n";
//
//
//	}
//
//
//
//}
//
//
//int main()
//{
//
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//
//	int _ = 1;
//	while (_--)solve();
//
//
//	return 0;
//}



//#include<iostream>
//#include<vector>
//#include<algorithm>
//using ll = long long;
//const int N = 2e5 + 7;
//using namespace std;
//ll a[N],n, c;
//
//int f(int mid) {
//
//	int res = 0; int pre = -1e9 - 10;
//	for (int i = 1; i <= n; ++i) {
//		if (a[i] - pre >= mid) res++, pre = a[i];
//
//		}
//	return res;
//}
//
//void solve()
//{
//
//	cin >> n >> c;
//	for (int i = 1; i <= n; ++i)cin >> a[i];
//	sort(a + 1, a + 1 + n);
//
//	int l = 0, r = 1e9 + 10;
//	while (l + 1 != r) {
//		int mid = (l + r) >> 1;
//
//		if (f(mid) >= c) l = mid;
//		else r = mid;
//	}
//	cout << l << '\n';
//}
//int main()
//{
//
//	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);
//
//
//	int _= 1;
//	while (_--)solve();
//
//	return 0;
//}

#include<iostream>
#include<vector>
#include<algorithm>
using ll = long long;
const int N = 2e5 + 7;
using namespace std;


void solve()
{
	int a, b; cin >> a >> b;
	int y = 0;
	for (int i = 1; i < a; ++i) {
		y ^= i;
	}
	y ^= b;
	if (y == a)cout << a + 2 << '\n';
	else if (y == 0)cout << a << '\n';
	else cout << a + 1 << '\n';

}

int main()
{

	ios::sync_with_stdio(0); cin.tie(0), cout.tie(0);


	int _; cin >> _;
	while (_--)
	{
		solve();
	}
	return 0;
}